﻿using InscripcionDotNet.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;


namespace InscripcionDotNet.Controllers
{
    public class AlumnoController : Controller
    {
        InscripcionDataContext dataContext = new InscripcionDataContext();
        
        public ActionResult Index()
        {
            //lamando a la lista de alumnos
            
            var alumnos = dataContext.alumnos;


            //que informacion necesita la vista para poder mostrar?
            return View(model: alumnos); //(le paso el modelo a la vista, solo recibe 1 parametro)
  

        }
        //dar de baja un alumno

        //[HttpPost] //<--limito a que solo se pueda acceder por post, y no por Get
        public ActionResult Borrar(int id)
        {
            
            var alumnos = dataContext.alumnos.Find(id); //busca alumno por id
            dataContext.alumnos.Remove(alumnos); //y lo borra
            dataContext.SaveChanges(); //guarda los cambios

            return RedirectToAction("Index"); //actualiza la tabla
        }
        //DAR DE ALTA UN ALUMNO
        [HttpGet]
        public ActionResult Agregar()
        {
            var alumno = new Alumno();
            return View(model: alumno);
        }


        [HttpGet]
        public ActionResult Editar(int id) 
        {
                       
            //buscar alumno en la base de datos
            var alumnos = dataContext.alumnos.Find(id); 
            return View(model: alumnos);
        }

        [HttpPost]
        public ActionResult Editar(int id, string nombre, string apellido)
        {                    

            var alumnos = dataContext.alumnos.Find(id);
            alumnos.Nombre = nombre;
            alumnos.Apellido = apellido;
            dataContext.SaveChanges();
            return RedirectToAction("Index", "Alumno");
        }

        [HttpPost]
        public ActionResult Agregar(string nombre, string apellido, string legajo)
        {          

            //crear nuevo alumno
            var alumno = new Alumno();

            //asigno los valores
            alumno.Nombre = nombre;
            alumno.Apellido = apellido;

            if (string.IsNullOrWhiteSpace(legajo))//para aceptar nulos seria
            {
                alumno.Legajo = 0;
            }
            else
            {
                alumno.Legajo = int.Parse(legajo); 
            }

            //validos los datos
            if (!(string.IsNullOrWhiteSpace(alumno.Nombre) || string.IsNullOrWhiteSpace(alumno.Apellido) || alumno.Legajo==0))
            {
                //lo guardo en la db
                dataContext.alumnos.Add(alumno);
                dataContext.SaveChanges(); //SIEMPRE GUARDO LOS CAMBIOS

                return RedirectToAction("Index", "Alumno");
            }
            else
            {
                //error, vuelve a agregar
                ViewBag.Error = true;
                return View("agregar", model: alumno);
               
            }

        }

    }
}
